SSRF Vulnerability
SSRF Nedir?
Web siteleri farklı web siteleri-kaynaklar ile iletişim halinde olabilir. Bu iletişim sırasında hedef sunucunun dosyasını çalıştırabilmekte. Örnek bir url ile gösterelim: https://alperencoskun.com/cesitligörsel?referance=https://saldirgansitesi.com/ssrf.png
Örnekten anlayacağımız üzere alperencoskun.com sitesi saldirgansitesi.com sitesinden bir istekte bulunuyor ve bulunduğu istek sayesinde kendi sunucusunda başka bir siteden dosya çalıştırabiliyor. Bunu sadece url üzerinde düşünmemeliyiz. BurpSuite ile giden gelen paketleri inceleyerek potansiyel açıkları görme imkânımız olabilir.
İşte bizim ilgileneceğimiz kısım da burada başlıyor. SSRF (Server-side request forgery ) Sunucu taraflı istek sahteciliğine gelen bu açık ile kurban sunucuya sahte istekler atılır ve sunucularında zararlı dosya çalıştırmamıza izin verir. Sadece başka bir kaynak olarak da düşünmemek gerekir. Sunucuların kendilerine karşı da bir ssrf zafiyetleri olabilir örnek verelim: (https://alperencoskun.com/cesitligorsel?referance=http://localhost/admin) burada kendi sunucusundan eğer varsa admin sayfasını çağırmış olduk. Bir sunucuda dosya çalıştırabilmek çok büyük hasarlara sebebiyet verebilir. Admin haklarına erişme, uzaktan kod yürütme gibi kritik açıklara bu zafiyet sayesinde ulaşılabilir.
Nasıl Test Edilir?
SSRF saldırısı için inceleme aşamasında sayfa kaynağını inceleyerek site herhangi bir kaynağın verilerini kullanıyor mu, sayfa kaynağında çıkmazsa BurpSuite ile paket incelemesi yapılabilir. Ayrıca aşağı bölümde belirteceğim şekilde farklı parametreler kullanarak SSRF zafiyetinin tespitini yapabiliriz. Manuel olarak kaynak url değiştirilerek yapabileceğimizi söylemiştik zaten.
SSRF’ten örnek verirken bWAPP in RFI LFI açığına ayrı değineceğimiz için aşağıdaki 2. SSRF (XXE) saldırısını yapacağız.
Bize aşağıdaki gibi aslında kodu ve nereye ulaşacağımızı belirtmiş.
XXE zafiyet bölümüne geldik.
Karşımıza çıkan sayfada BurpSuite ile paket incelemeyi başlattık ve Any Bugs butonuna tıkladık. Bu kısımda XXE saldırısıyla beraber SSRF saldırısı yapmış olacağız. SSRF bu yüzden geniş bir etkisi var diyebiliriz.
Paket geldi ve Repeater a yolladım. Biz Bu paketi XXE kodunun olduğu bölümü manipüle edeceğiz ve http://localhost/bWAPP/passwords/heroes.xml adresinden veri çekmeye çalışacağız. Kodumuz aşağıdaki gibi olacak.
Kodu kısaca açıklamak gerekirse; resource bölümünde bu kaynaktan veri al diyoruz. http://localhost/bWAPP/passwords/heroes.xml
Response bölümünde bize şifreli bir şekilde veri geldi. Bu veriyi de BurpSuite Decoder özelliğini aşağıdaki gibi kullanarak çözebiliriz.
Ve bWAPP labını tamamladık. Şimdi de PortSwigger labına geçelim.
Bu labda bizim sunucunun kendine karşı ssrf zafiyetini bulmamız ve admin paneline ulaşmamız istenmiş. Admin panelinden de Carlos kullanıcısını silmemizi istemiş.
Şimdi bu kısımda herhangi bir ürünün view details bölümüne tıklıyoruz. Burpsuite paket incelemeyi başlatıyoruz.
Zaten check stock bölümüne tıkladığımızda bize kaç units bulunuyor bunun hakkında bilgi veriyor. Yani arka planda sayısal işlemler dönüyor ve bize bir cevap getiriyor.
Burada bir api kullandığını ve bir kaynaktan veri çektiğini de görüyoruz. Yapacağımız şey şu labın bizden istediği şeyi yani http://localhost/admin sayfasından kaynak çekmeye çalışacağız.
Aslında bu kısımda admin panele ulaşabildik fakat kullanıcı silmede hata aldık. Bu sefer kullanıcı silme işlemi için yönlendirdiği url ye SSRF saldırısı ile ulaşarak url üzerinden silmeye çalışacağız.
Aynı şekilde paketi tekrar yolluyorum fakat bu sefer kaynağı silme koduna yönlendiriyorum.
Ve Carlos kullanıcısını silebildik.
Peki Gerçek Web Sitelerinde Laboratuvarlardaki Gibi Çıkar Mı?
Öncelikle belirtmek isterim ki gerçek bir web sitesinde kullanıcılar admin panelinde direkt olarak karşımıza çıkmayabilir. Hatta direk /localhost/admin şeklinde de ulaşamayabiliriz. Bu tamamen adminin nasıl oluşturduğu ile ilgilidir. Mesela sunucunun kendine karşı zafiyetinde localhost yazıp bir url vermek yerine file:///etc/passwd şeklinde de bir SSRF saldırısı deneyebiliriz. Ama gösterdiğimiz stockApi ‘den bir kaynak alması veya sayfa kaynağında dahi bir kaynaktan veri aldığını görüp SSRF saldırısına ulaşabiliriz. Kısacası bu öğrendiklerimiz ile gerçek bir web sitesinde SSRF zafiyeti tespit etmenin mümkün olabileceğini belirtmek isterim.
Örnek Birkaç SSRF Parametresi
Birkaç Örnek SSRF Raporları
https://hackerone.com/reports/826097
https://hackerone.com/reports/341876
https://hackerone.com/reports/811136